EC-CUBE 2.11.4
[ class tree: EC-CUBE 2.11.4 ] [ index: EC-CUBE 2.11.4 ] [ all elements ]

Source for file SC_PageNavi.php

Documentation is available at SC_PageNavi.php

  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) 2000-2011 LOCKON CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.lockon.co.jp/
  8.  *
  9.  * This program is free software; you can redistribute it and/or
  10.  * modify it under the terms of the GNU General Public License
  11.  * as published by the Free Software Foundation; either version 2
  12.  * of the License, or (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  22.  */
  23.  
  24. /* ※使用条件※
  25.     ・formタグに以下を追加する。
  26.         <input type="hidden" name="pageno" value="<!--{$tpl_pageno}-->">
  27.     ・ソースの最初に以下を記述する。
  28.         $objPage->tpl_pageno = $_POST['pageno'];
  29.     ・$func_nameに指定するJavaScriptの例
  30.         // ページナビで使用する
  31.         function fnNaviPage(pageno) {
  32.             document.form1['pageno'].value = pageno;
  33.             document.form1.submit();
  34.         }
  35. */
  36. class SC_PageNavi {
  37.     var $now_page;      // 現在のページ番号
  38.     var $max_page;      // 最終のページ番号
  39.     var $start_row;     // 開始レコード
  40.     var $strnavi;       // ページ送り文字列
  41.     var $arrPagenavi = array()// ページ
  42.  
  43.     // コンストラクタ
  44.     function SC_PageNavi($now_page$all_row$page_row$func_name$navi_max NAVI_PMAX$urlParam ''$display_number true{
  45.         $this->arrPagenavi['mode''search';
  46.  
  47.         //現在ページ($now_page)が正しい数値でない場合
  48.         if (!preg_match("/^[[:digit:]]+$/"$now_page|| $now_page || strlen($now_page== 0{
  49.             $this->now_page = 1;
  50.         else {
  51.             $this->now_page = htmlspecialchars($now_pageENT_QUOTESCHAR_CODE);
  52.         }
  53.         $this->arrPagenavi['now_page'$this->now_page;
  54.  
  55.         // 最終ページの計算
  56.         $this->max_page = ceil($all_row/$page_row);
  57.  
  58.         // 最終ページよりも現在ページが大きい場合は、最初に戻す。
  59.         if ($this->max_page < $this->now_page{
  60.             $this->now_page = 1;
  61.         }
  62.  
  63.         $this->start_row    = ($this->now_page - 1$page_row;
  64.         $this->all_row      $all_row;
  65.  
  66.         // 開始行が不正な場合
  67.         if (!($this->start_row < $all_row && $this->start_row >= 0)) {
  68.             $this->start_row = 0;
  69.         }
  70.  
  71.         if ($all_row 1{
  72.  
  73.             //「前へ」「次へ」の設定
  74.             $before "";
  75.             $next "";
  76.             if ($this->now_page > 1{
  77.                 $this->arrPagenavi['before'$this->now_page - 1;
  78.                 $urlParamThis str_replace('#page#'$this->arrPagenavi['before']$urlParam);
  79.                 $urlParamThis htmlentities($urlParamThisENT_QUOTES);
  80.                 $before "<a href=\"?$urlParamThis\" onclick=\"$func_name('{$this->arrPagenavi['before']}'); return false;\">&lt;&lt;前へ</a> ";
  81.             else {
  82.                 $this->arrPagenavi['before'$this->now_page;
  83.             }
  84.  
  85.             if ($this->now_page < $this->max_page{
  86.                 $this->arrPagenavi['next'$this->now_page + 1;
  87.                 $urlParamThis str_replace('#page#'$this->arrPagenavi['next']$urlParam);
  88.                 $urlParamThis htmlentities($urlParamThisENT_QUOTES);
  89.                 $next " <a href=\"?$urlParamThis\" onclick=\"$func_name('{$this->arrPagenavi['next']}'); return false;\">次へ&gt;&gt;</a>";
  90.             else {
  91.                 $this->arrPagenavi['next'$this->now_page;
  92.             }
  93.  
  94.             // 表示する最大ナビ数を決める。
  95.             if ($navi_max == "" || $navi_max $this->max_page{
  96.                 // 制限ナビ数の指定がない。ページ最大数が制限ナビ数より少ない。
  97.                 $disp_max $this->max_page;
  98.             else {
  99.                 // 現在のページ+制限ナビ数が表示される。
  100.                 $disp_max $this->now_page + $navi_max 1;
  101.                 // ページ最大数を超えている場合は、ページ最大数に合わせる。
  102.                 if ($disp_max $this->max_page{
  103.                     $disp_max $this->max_page;
  104.                 }
  105.             }
  106.  
  107.             // 表示する最小ナビ数を決める。
  108.             if ($navi_max == "" || $navi_max $this->now_page{
  109.                 // 制限ナビ数の指定がない。現在ページ番号が制限ナビ数より少ない。
  110.                 $disp_min 1;
  111.             else {
  112.                 // 現在のページ-制限ナビ数が表示される。
  113.                 $disp_min $this->now_page - $navi_max 1;
  114.             }
  115.  
  116.             $this->arrPagenavi['arrPageno'array();
  117.             $page_number "";
  118.             for ($i=$disp_min$i <= $disp_max$i++{
  119.  
  120.                 if ($i != $disp_max{
  121.                     $sep " ";
  122.                 else {
  123.                     $sep "";
  124.                 }
  125.  
  126.                 if ($i == $this->now_page{
  127.                     $page_number .= "<li><strong>$i</strong></li>";
  128.                 else {
  129.                     $urlParamThis str_replace('#page#'$i$urlParam);
  130.                     $urlParamThis htmlentities($urlParamThisENT_QUOTES);
  131.                     $page_number .= "<li><a href=\"?$urlParamThis\" onclick=\"$func_name('$i'); return false;\">$i</a></li>";
  132.                 }
  133.  
  134.                 $page_number .= $sep;
  135.  
  136.                 $this->arrPagenavi['arrPageno'][$i$i;
  137.             }
  138.  
  139.             if ($before && $next{
  140.                 $this->strnavi = $before .(($display_number$page_number ' | '.$next;
  141.             else if ($before || $next{
  142.                 $this->strnavi = $before .(($display_number$page_number ''.$next;
  143.             }
  144.         else {
  145.             $this->arrPagenavi['arrPageno'][01;
  146.             $this->arrPagenavi['before'1;
  147.             $this->arrPagenavi['next'1;
  148.         }
  149.     }
  150. }
  151.  
  152. ?>

Documentation generated on Fri, 24 Feb 2012 14:02:52 +0900 by Seasoft